package com.lpssfxy.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.lpssfxy.utils.Constant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.springframework.data.mongodb.core.mapping.Document;

import java.util.Date;

@Data               // 自动生成private修饰的属性的Getter和Setter方法
@NoArgsConstructor  // 自动生成无参构造器
@AllArgsConstructor // 自动生成有参构造器
@ToString           // 相当于重写了toString,在查看log的时候可以清楚看到用户可以识别的信息，不至于都是hashCode
@Accessors(chain = true) // 使用 Lombok 中的 @Accessors(chain = true) 注解，能让我们方便使用链式方法创建实体对象。
@Document(value = Constant.MONGODB_USER_COLLECTION)
public class User {
    @JsonIgnore
    private String _id;
    private Integer userId;
    private String username;
    private String password;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS", timezone = "GMT+8")
    private Date createTime = new Date();
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:SS", timezone = "GMT+8")
    private Date updateTime;

    public void setUsername(String username) {
        // 有一种办法就是使用位与操作：强制把符号位去掉，保证结果只在正数区间
        this.userId = username.hashCode() & Integer.MAX_VALUE;
        this.username = username;
    }
}
